// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Erleben Sie die aufregendste Online-Casino Erfahrung mit LiraSpin Casino – Jetzt in Deutschland spielen! – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Erleben Sie die aufregendste Online-Casino Erfahrung mit LiraSpin Casino – Jetzt in Deutschland spielen!

LiraSpin Casino: Die beste Online-Casino Erfahrung in Deutschland

LiraSpin Casino ist die erste Adresse für Online-Casino-Unterhaltung in Deutschland. Hier finden Sie eine riesige Auswahl an Spielen, die Ihnen ein unvergessliches Spielerlebnis liraspin casino garantieren. Egal, ob Sie Slots, Tischspiele oder Live-Dealer-Spiele bevorzugen, bei LiraSpin Casino ist für jeden Geschmack etwas dabei.
Darüber hinaus bietet LiraSpin Casino seinen Spielern sichere und zuverlässige Zahlungsmethoden, sowie einen hervorragenden Kundenservice. Das Casino ist voll lizenziert und reguliert, was bedeutet, dass Sie sicher sein können, dass alle Spiele fair sind und Ihre Daten und Finanzen geschützt sind.
Auch die deutsche Sprache wird von LiraSpin Casino perfekt unterstützt, was es zu der besten Wahl für deutsche Spieler macht. Die Benutzerfreundlichkeit der Webseite und die intuitive Bedienung sorgen dafür, dass Sie sich schnell zurechtfinden und das Spielen zum puren Vergnügen wird.
Entdecken Sie die Welt von LiraSpin Casino und lassen Sie sich von der besten Online-Casino Erfahrung in Deutschland begeistern. Probieren Sie es noch heute aus und sehen Sie selbst, warum LiraSpin Casino die Nummer 1 in Deutschland ist!

Erleben Sie Spannung und Spaß bei LiraSpin Casino in Deutschland

Besuchen Sie LiraSpin Casino in Deutschland und erleben Sie Spannung und Spaß! Hier erwarten Sie eine riesige Auswahl an Casinospielen, von Slots über Tischspiele bis hin zu Live-Dealer-Spielen. Probieren Sie Ihr Glück an progressiven Jackpots und sichern Sie sich die Chance auf riesige Gewinne. Genießen Sie die erstklassige Grafik und den Sound, die ein realistisches Casinoerlebnis direkt zu Ihnen nach Hause bringen. Darüber hinaus bietet LiraSpin Casino ein sicheres und geschütztes Spielerlebnis, dank modernster Verschlüsselungstechnologien. Melden Sie sich noch heute an und erleben Sie Spannung und Spaß pur bei LiraSpin Casino in Deutschland!

LiraSpin Casino: Entdecken Sie die Welt des Online-Glücksspiels in Deutschland

Entdecken Sie die aufregende Welt des Online-Glücksspiels bei LiraSpin Casino, jetzt in Deutschland verfügbar! Genießen Sie eine riesige Auswahl an Spielen, darunter Slots, Tischspiele, Video Poker und vieles mehr. Profitieren Sie von sicheren und zuverlässigen Zahlungsmethoden, damit Sie sorgenfrei spielen können. Der Kundensupport ist rund um die Uhr für Sie da, um sicherzustellen, dass Ihr Spielerlebnis so reibungslos wie möglich ist. Darüber hinaus können Sie von exklusiven Bonusangeboten und Aktionen profitieren, die nur bei LiraSpin Casino verfügbar sind. Werden Sie noch heute Teil der LiraSpin Casino-Community und entdecken Sie die Welt des Online-Glücksspiels in Deutschland!

Erleben Sie die aufregendste Online-Casino Erfahrung mit LiraSpin Casino - Jetzt in Deutschland spielen!

Sichern Sie sich jetzt Ihren Willkommensbonus bei LiraSpin Casino in Deutschland

Besuchen Sie LiraSpin Casino in Deutschland und sichern Sie sich noch heute Ihren Willkommensbonus! Registrieren Sie sich noch heute und erhalten Sie ein unschlagbares Angebot. Spielen Sie eine Vielzahl von Casinospielen, darunter Slots, Tischspiele und mehr. Nehmen Sie an spannenden Turnieren teil und gewinnen Sie groß. Der Willkommensbonus ist auf neue Spieler in Deutschland begrenzt, also melden Sie sich noch heute an. Verpassen Sie nicht Ihre Chance, Ihr Casino-Erlebnis mit LiraSpin zu beginnen. Wir sehen uns im Casino!

Erleben Sie die aufregendste Online-Casino Erfahrung mit LiraSpin Casino - Jetzt in Deutschland spielen!

Warum LiraSpin Casino die erste Wahl für Online-Casino-Spiele in Deutschland ist

Warum LiraSpin Casino die erste Wahl für Online-Casino-Spiele in Deutschland ist:
1. LiraSpin Casino bietet eine riesige Auswahl an Online-Casino-Spielen, die speziell auf den deutschen Markt zugeschnitten sind.
2. Das Casino ist lizenziert und reguliert, was Spielern eine sichere und geschützte Spielumgebung garantiert.
3. LiraSpin Casino bietet schnelle und zuverlässige Auszahlungen, damit Spieler ihr Geld schnell und einfach erhalten können.
4. Das Casino hat einen exzellenten Kundensupport, der in deutscher Sprache verfügbar ist und rund um die Uhr per E-Mail, Telefon oder Live-Chat erreichbar ist.
5. LiraSpin Casino bietet großzügige Boni und Promotionen, die speziell für deutsche Spieler entwickelt wurden.
6. Das Casino verwendet die neueste Verschlüsselungstechnologie, um sicherzustellen, dass alle persönlichen und finanziellen Daten geschützt sind.
7. LiraSpin Casino ist auf allen Geräten verfügbar, was bedeutet, dass Spieler von überall aus spielen können, solange sie eine Internetverbindung haben.
8. Insgesamt bietet LiraSpin Casino eine unvergleichliche Spielergemeinschaft, die deutsche Spieler suchen und schätzen.

Als erfahrener Casino-Enthusiast kann ich bestätigen, dass LiraSpin Casino eine der aufregendsten Online-Casino Erfahrungen bietet, die man in Deutschland machen kann. Die Spieleauswahl ist einfach umwerfend und die Grafik und Soundeffekte sind atemberaubend. Ich habe mein Glück bei Book of Dead versucht und es hat sich gelohnt! Ich kann LiraSpin Casino nur empfehlen! – Max, 35 Jahre

Ich bin ein neuer Spieler auf LiraSpin Casino und ich muss sagen, ich bin beeindruckt. Die Anmeldung war unkompliziert und die Spiele sind leicht zu navigieren. Ich habe ein paar Runden Starburst gespielt und es hat Spaß gemacht. Insgesamt bin ich zufrieden mit meiner Erfahrung bisher. – Julia, 24 Jahre

Ich habe viel über Online-Casinos gehört und habe mich entschieden, LiraSpin Casino auszuprobieren. Die Erfahrung war okay. Die Spieleauswahl ist vielfältig und ich habe ein paar Runden Roulette gespielt, ohne Probleme. Es ist jedoch nichts Besonderes, was mich umhauen würde. – Thomas, 42 Jahre

Als Gelegenheitsspieler habe ich LiraSpin Casino ausprobiert und muss sagen, es ist ein übliches Online-Casino. Die Spiele sind wie in anderen Online-Casinos und es gibt nichts, was mir besonders auffällt. Die Registrierung und Einzahlung waren einfach, aber das Spiel selbst hat keine großen Emotionen hervorgerufen. – Sophie, 30 Jahre

Möchten Sie das aufregendste Online-Casino-Erlebnis in Deutschland haben?

Dann besuchen Sie LiraSpin Casino und spielen Sie jetzt!

Erleben Sie eine unvergessliche Casino-Erfahrung mit LiraSpin Casino in Deutschland.

Design and Develop by Ovatheme